package com.finanzas.proyectoServlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

import javax.ejb.EJB;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.json.simple.JSONObject;
import org.json.simple.JSONValue;

import com.finanzas.dao.UnidadHDao;
import com.finanzas.dao.UnidadHLdapDao;
import com.finanzas.entity.UnidadH;
import com.finanzas.entity.UnidadHLdap;


@WebServlet("/ProyectoServletController")
public class ProyectoServletController extends HttpServlet {
	private static final long serialVersionUID = 1L;

	@EJB
	private UnidadHDao proyectoDAO;
	@EJB
	private UnidadHLdapDao proyectoLdapDao;
	
	public ProyectoServletController() {
		super();
	}

   protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		Integer operacion = Integer.parseInt(request.getParameter("operacion"));
        PrintWriter out = response.getWriter();
		if (operacion == 1) {
			    Map<String, String> proyecto = null;
			    List<Map<String, String>> lista = new LinkedList<Map<String,String>>();
				List<UnidadH> listProyectos = proyectoDAO.consultarProyectosUsuarioLdap(35L,5L);
				if(listProyectos!=null && listProyectos.size()>0){			
					for(UnidadH p: listProyectos){
						proyecto = new LinkedHashMap<String, String>();
						proyecto.put("desc",p.getNombreProyecto().toUpperCase());
						proyecto.put("valor",p.getIdProyecto().toString());
						lista.add(proyecto);
					}
				String respuestaJson = JSONValue.toJSONString(lista);
				out.println(respuestaJson);
			}
		} else if (operacion == 2) {

		}else if(operacion==3){
			Integer i = 0;
			Map<String, String> proyecto = null;
			List<Map<String, String>> lista = new LinkedList<Map<String, String>>();
			List<UnidadH> listProyectos = proyectoDAO.consultarProyectosUsuarioLdap(35L,5L);
			if (listProyectos != null && listProyectos.size() > 0) {
				for (UnidadH p : listProyectos) {
					
					if(p.getNumeroAcciones()>0){
					i++;
					proyecto = new LinkedHashMap<String, String>();
					proyecto.put("id",i.toString());
					proyecto.put("proyecto",p.getNombreProyecto().toUpperCase());
					proyecto.put("socios",p.getNumeroAcciones().toString());
					lista.add(proyecto);
					}
				}
				String respuestaJson = JSONValue.toJSONString(lista);
				out.println(respuestaJson);
			}
		}
	}

	@SuppressWarnings("unchecked")
	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		Integer operacion = Integer.parseInt(request.getParameter("operacion"));

		PrintWriter out = response.getWriter();
		if (operacion == 1) {

		
		} else if (operacion == 2) {
          
			 String nombreProyecto = request.getParameter("nombreProyecto");
			 String calleProyecto = request.getParameter("calleProyecto");
			 String numExterior = request.getParameter("numExterior");
			 String cp = request.getParameter("cp");
			 Integer numAcciones = Integer.parseInt(request.getParameter("numAcciones"));
			 Long idEstatus = Long.parseLong(request.getParameter("estatus")); 
			 Long idUsuario = Long.parseLong(request.getParameter("idUsuario"));
			 System.out.println("idUsuario: "+idUsuario);
			 if(idUsuario!=null && idUsuario>0){
			 UnidadH p = new UnidadH();
			 p.setDireccionProyecto(calleProyecto+" "+numExterior+" "+cp);
			 p.setIdEstatusProyecto(idEstatus);
			 p.setNombreProyecto(nombreProyecto);
			 p.setNumeroAcciones(numAcciones);
			 proyectoDAO.guardar(p);
			 // ***************************************************************************
			 UnidadHLdap proyectoLdap = new UnidadHLdap();
			 proyectoLdap.setIdProyecto(p.getIdProyecto());
			 proyectoLdap.setIdUserLdap(idUsuario);
			 proyectoLdapDao.guardar(proyectoLdap);
			 //****************************************************************************
			 JSONObject respJson = new JSONObject();
			 respJson.put("val",true);
			 out.println(respJson);
			}
		}else if(operacion == 3){
			
		}
	}

}
